This invention generally relates to digital data processing systems and, more specifically, to the communication of data between a digital data processing system and an external device connected to that system.
Conventionally, a data processing system includes a plurality of interconnected data elements, usually comprising a central processor, memory, secondary storage devices, and input-output devices, plus programs for controlling the operation and interaction of these data elements. A VAX11/780 data processing system that is manufactured and sold by Digital Equipment Corporation, the assignee of this invention, is one specific embodiment of a data processing system in which the central processor, memory, secondary storage devices and input-output devices connect in parallel on an internal bus. This system is described in U.S. patent application Ser. Nos. 954,453 and 945,601 and in several publications, including publications titled: VAX11/780 Architecture Handbook (1977), VAX11/780 Hardware Handbook (1978), and VAX11/780 Software Handbook (1977), all published by Digital Equipment Corporation.
In this data processing system, as in many others, certain programs control the operation and interaction of the data elements and they constitute an operating system. More specifically, the operating system is an integrated collection of service routines, or programs, for supervising the sequencing of programs by the data processing system. These programs perform various debugging, input-output, accounting, compilation, and storage-assignment tasks, and process scheduling. Of particular interest with this patent application are the functions that are known as "input-output driver", or "I/O driver", routines. An I/O driver routine is a routine that initiates, in a data element such as an input-output driver, requests for transferring data referenced in a program to or from that input-output data element in response to input-output requests. As input-output requests are generated, they are placed in a queue and are subsequently processed according to the relative priority of the user program that issues them. The requests are issued to channels which have been previously associated with particular data elements. In addition, I/O driver routines process errors and interruptions. Each secondary storage device and each input-output device will have an I/O driver routine that pertains to that particular device.
Other programs are called "application" or "user" programs. They operate on "process data" to solve specific problems. They also interact with the operating system to transfer information among the data elements. In the following discussion, the process data is maintained in a "process data buffer". The phrase "user process" then encompasses the area in memory that contains the user program and the process data buffer.
The VAX11/780 data processing system, and other systems, are typically characterized by diverse types of external devices that are connected to an interconnecting bus in addition to the memory and central processor. One is an input-output adapter that couples the interconnecting bus to a plurality of input-output devices such as teletypewriters, etc. A secondary storage bus adapter couples the bus to various secondary storage devices that typically include disk and tape drive units. In the VAX11/780 data processing systems, these adapters enable transfers of data between a particular device and the memory at an effective rate that is less than the maximum potential data transfer rate. More specifically, in the VAX11/780 the maximum potential data transfer rate is 13.3 megabytes per second. Various restrictions imposed by the data elements reduce this rate. Thus the potential effective data transfer rate that might be reached during transfer between the device and the memory is 1.5 megabytes per second. Interrupt latency and other delays required for the operating system to initiate a request reduce the actual effective rate even more.
Two related problems contribute to the difference between the maximum potential data transfer rate and the low actual effective transfer rate: namely, (1) requirements for physical addresses to be calculated by address calculation routines in the operating system and (2) limitations in the adapter's capability to form addresses. For example, in the VAX11/780 data processing system, the data elements operate with virtual addresses. For example, a data element might have a capability generating 18-bit virtual addresses in a system that requires a 30-bit address to specify a physical memory location address. A physical address must therefore be calculated before a device can transfer any data, and an address calculation routine in the operating system is required to perform the calculation.
These calculations are further complicated by the segmentation of virtual memory into contiguous virtual memory pages. While successive virtual memory pages are contiguous, there is no guarantee that the corresponding page locations in physical memory will be contiguous. Therefore it is necessary to recompute the physical address of the beginning of a page each time a page boundary is crossed. Each such calculation involves a number of operations other than merely calculating the physical address. For example, it is necessary to assure that a virtual address in a user process corresponds to a location that is assigned to that user process.
Other processing must be interrupted so that the address calculation routine can be processed. This requires processor time and may require a significant amount of bus time, especially if the address calculation routine does not reside permanently in the random access memory and has to be transferred from a secondary storage device. As will be apparent, the repeated use of the operating system for overhead functions, such as address calculations, can reduce the overall rate of data transfers that may be attained by a user to a rate that is less than element the rate at which the data can transfer.
The driver routines for such data elements also reduce the effective data transfer rate. They include various messages that must be sent before a data transfer can occur. For example, the driver routine for a secondary storage device must transfer starting addresses, byte counts, commands for reading or writing, track and sector addresses, and other information before the data transfer can commence. Each of these information transfers may require one or more bus cycles that preclude the transfer of the user's process data.
Under such situations data may be lost or the user must reduce the rate at which the data is generated. Such losses or reductions can become unacceptable in many applications. For example, there are a number of scientific applications for data processing systems in which sensors for an experiment generate information at very high rates and in which the loss of data or a reduction in data would reduce the accuracy of the results of the experiment.